package com.gitee.wsl.time.chinese

import com.gitee.wsl.time.chinese.util.LunarInfo.leapMonth


/**
 * 农历月份表示
 *
 * @author looly
 * @since 5.4.1
 */
object ChineseMonth {
    private val MONTH_NAME =
        arrayOf<String?>("一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二")
    private val MONTH_NAME_TRADITIONAL =
        arrayOf<String>("正", "二", "三", "四", "五", "六", "七", "八", "九", "寒", "冬", "腊")

    /**
     * 当前农历月份是否为闰月
     *
     * @param year  农历年
     * @param month 农历月
     * @return 是否为闰月
     * @since 5.4.2
     */
    fun isLeapMonth(year: Int, month: Int): Boolean {
        return month == leapMonth(year)
    }

    /**
     * 获得农历月称呼<br></br>
     * 当为传统表示时，表示为二月，腊月，或者润正月等
     * 当为非传统表示时，二月，十二月，或者润一月等
     *
     * @param isLeapMonth   是否闰月
     * @param month         月份，从1开始，如果是闰月，应传入需要显示的月份
     * @param isTraditional 是否传统表示，例如一月传统表示为正月
     * @return 返回农历月份称呼
     */
    fun getChineseMonthName(isLeapMonth: Boolean, month: Int, isTraditional: Boolean): String {
        return (if (isLeapMonth) "闰" else "") + (if (isTraditional) MONTH_NAME_TRADITIONAL else MONTH_NAME)[month - 1] + "月"
    }
}
